package com.funsport.service;

import com.funsport.entity.Club;
import com.funsport.entity.Event;
import com.funsport.entity.User;

import java.util.List;
import java.util.Map;

/**
 * 推荐服务接口
 * 提供活动推荐、用户推荐、俱乐部推荐等功能
 *
 * @author Fun-Sport Team
 */
public interface IRecommendationService {

    /**
     * 为用户推荐活动
     *
     * @param userId 用户ID
     * @param limit 返回数量
     * @return 推荐的活动列表
     */
    List<Event> recommendEventsForUser(Long userId, Integer limit);

    /**
     * 为用户推荐俱乐部
     *
     * @param userId 用户ID
     * @param limit 返回数量
     * @return 推荐的俱乐部列表
     */
    List<Club> recommendClubsForUser(Long userId, Integer limit);

    /**
     * 为用户推荐好友
     *
     * @param userId 用户ID
     * @param limit 返回数量
     * @return 推荐的用户列表
     */
    List<User> recommendUsersForUser(Long userId, Integer limit);

    /**
     * 获取热门活动
     *
     * @param city 城市筛选
     * @param days 时间范围（未来N天）
     * @param limit 返回数量
     * @return 热门活动列表
     */
    List<Map<String, Object>> getHotEvents(String city, Integer days, Integer limit);

    /**
     * 获取相似活动
     *
     * @param eventId 活动ID
     * @param limit 返回数量
     * @return 相似活动列表
     */
    List<Event> getSimilarEvents(Long eventId, Integer limit);
}
